#ifndef _ACTION_H
#define _ACTION_H

#include "system.h"
#include "ctrl_basic.h"


typedef enum 
{
   Step_Begin=0,
	 Step_BeginToline,
	 Step_right_angles_1,
	 Step_right_angles_1_ToLine,
	 Step_right_angles_2,
	 Step_right_angles_2_ToLine,
	 Step_right_angles_3,
	 Step_right_angles_3_ToLine,
	 Step_right_angles_4,
	 Step_right_angles_4_ToLine,
}Run_Step_St;


typedef enum 
{
	Mode_One,
	Mode_Two,
	Mode_Three,
}Fly_Mode_St;


typedef enum
{
    Mode_One_St_Act_Climb = 0,//ÉÏÉý
    Mode_One_St_Act_Stable,//×ÔÎÈ
    Mode_One_St_Act_Right_Move,//ÐüÍ£
		Mode_One_St_Act_Front_Move,
		Mode_One_St_Act_Back_Move,
		Mode_One_St_Act_Left_First_Move,
		Mode_One_St_Act_Left_Second_Move,
		Mode_One_St_Act_FirRight_Angle_Stable,
		Mode_One_St_Act_SecRight_Angle_Stable,
		Mode_One_St_Act_Front_Circle_Stable,
		Mode_One_St_Act_ThirdRight_Angle_Stable,
		Mode_One_St_Act_FouthRight_Angle_Stable,
		Mode_One_St_Act_Right_Move_To_Circle,//ÐüÍ£
		Mode_One_St_Act_End_Circle_Stable,
    Mode_One_St_Act_Land,//½µÂä
    Mode_One_St_Act_Lock,//Ëø¶¨
    
    Mode_One_St_Act_Num,    
}Mode_One_St_Act_t;


typedef enum
{
    Mode_Two_St_Act_Climb = 0,
    Mode_Two_St_Act_Start_Stable,
    Mode_Two_St_Act_TrackingLine,
	Mode_Two_St_Act_End_Stable,
	Mode_TWO_St_Act_Land,
	Mode_Two_St_Act_Right_Move,
	Mode_Two_St_Act_Right_Stable,
	Mode_Two_St_Act_Left_Move,
	Mode_Two_St_Act_Left_Stable,
/*	Mode_Two_St_Act_Front_Move,
	Mode_Two_St_Act_Back_Move,
	Mode_Two_St_Act_Left_First_Move,
	Mode_Two_St_Act_Left_Second_Move,
	Mode_Two_St_Act_FirRight_Angle_Stable,
    Mode_Two_St_Act_Num,*/
}Mode_Two_St_Act_t;



extern Fly_Mode_St Fly_Mode_E;
extern Mode_One_St_Act_t Mode_One_St_Act;
extern Run_Step_St Run_Step_E;

void Wait_time_EN_OFF(uint16_t time);
void Ctrl_Update_Act_Mode_One(void);
void Ctrl_Update_Act_Mode_Two(void);
void Ctrl_Update_Act_Mode_Three(void);
void Action_Update(void);
void Ctrl_Update_Act_Mode_One_Pid_Change(void);
void Ctrl_Update_Act_Mode_Two_Pid_Change(void);
void Ctrl_Update_Act_Mode_Three_Pid_Change(void);

#endif

